package cn.ml.gaoJi.paiXu;

public class chaRuPaiXuFa {
    public static void main(String[] args){

        /*1
         * 冒泡排序（1）
         * 1.比较相邻的元素。如果第一个比第二个大，就交换他们两个。
         * 2.对每一对相邻元素作同样的工作，从开始第一对到结尾的最后一对。这步做完后，最后的元素会是最大的数。
         * 3.针对所有的元素重复以上的步骤，除了最后一个。
         * 4.持续每次对越来越少的元素重复上面的步骤，直到没有任何一对数字需要比较。
         */
        /*int[] nn={16,25,9,90,23};
        for(int i=1;i<nn.length;i++){
            int tmp = nn[i];//先记录待插入的数据
            int j=i;
            //只要没到头并且要移动的数据大于待插入数据
            for(;j>0 && nn[j-1]>tmp;j--){
                nn[j]=nn[j-1];//数据后移
            }
            nn[j] = tmp;//将之前记录好的数据插入到插入位置
        }
        for(int i=0;i<nn.length;i++){
            System.out.println(nn[i]);
        }*/
        //冒泡排序（2）
        int[] nn={16,25,9,90,23};
        //外层循环控制比较次数
        for(int i=0;i<nn.length;i++){
            //内层循环控制到达位置
            for(int j=0;j<nn.length-i-1;j++){
                //前面元素比后面大就交换
                if(nn[j] > nn[j+1]){
                    int temp = nn[j+1];
                    nn[j] = nn[j+1];
                    nn[j+1] = temp;
                }
            }
        }


        /*2选择排序
         *首先在未排序序列中找到最小（大）元素，存放到排序序列的起始位置，
         * 然后，再从剩余未排序元素中继续寻找最小（大）元素，
         * 然后放到已排序序列的末尾。以此类推，直到所有元素均排序完毕。
         */
       /* int[] nn={16,255,9,90,23,84};
        for(int i=1;i<nn.length;i++){
            int index = i;
            for(int j=i-1;j>=0;j--){
                if(nn[i]<nn[j]){
                    index = j;
                }else{
                    break;
                }
            }
            if(index!=i){
                int dai = nn[i];
                for(int j=i;j>index;j--){
                    int tmp=nn[j];
                    nn[j]=nn[j-1];
                    nn[j-1]=tmp;
                }
                nn[index]=dai;
            }
        }
        for(int i=0;i<nn.length;i++){
            System.out.println(nn[i]);
        }*/




    }
}
